home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 10 / AACD 10.iso / AACD / Utilities / FWCalendar / FindNewData.rexx next >
OS/2 REXX Batch file  |  1999-11-24  |  5KB  |  205 lines

  1. /**/
  2.  
  3. parse arg OldFile NewFile
  4. call addlib('rexxreqtools.library', 0, -30, 0)
  5.  
  6. Diff = ''
  7.  
  8. call open('Temp', strip(OldFile))
  9.   OldData = readch('Temp', 65535)
  10. call close('Temp')
  11.  
  12. call open('Temp', strip(NewFile))
  13.   NewData = readch('Temp', 65535)
  14. call close('Temp')
  15.  
  16. DataCount = 0
  17. call openv('OldData')
  18.   do until eofv('OldData')
  19.     VarLine = strip(readvln('OldData'))
  20.     if pos('/* End Pass One', VarLine) > 0 then leave
  21.     if (VarLine == '') | (left(VarLine, 2) == '/*') then iterate
  22.     VarName = strip(word(VarLine, 1))
  23.     Var.DataCount = VarName
  24.     DataCount = DataCount + 1
  25.   end
  26. call closev('OldData')
  27.  
  28. call openv('Diff')
  29. call openv('NewData')
  30.   do until eofv('NewData')
  31.     VarLine = strip(readvln('NewData'))
  32.     if pos('/* End Pass One', VarLine) > 0 then leave
  33.     if (VarLine == '') | (left(VarLine, 2) == '/*') then iterate
  34.     VarName = strip(word(VarLine, 1))
  35.     if MemberID(VarName, 'Var', DataCount, 0) == -1 then do
  36.       call writevln('Diff', VarLine)
  37.     end
  38.   end
  39. call closev('NewData')
  40. call closev('Diff')
  41.  
  42. if Diff ~= '' then do
  43.   call open('Temp', pathpart(OldFile)'FWCalendar.diff', 'W')
  44.     call writech('Temp', Diff)
  45.   call close('Temp')
  46. end
  47.  
  48. exit
  49.  
  50. /***//*******  VIO Routines () Subroutine  ***********/
  51. /***//** OpenV() **/
  52. OpenV:
  53.   parse arg VIO_Variable
  54.  
  55.   if Open.VIO_Variable ~= 1 then do
  56.     Open.VIO_Variable = 1
  57.     Pointer.VIO_Variable = 1
  58.     EOF.VIO_Variable = 0
  59.     return 1
  60.   end
  61.   else return 0
  62. /**/
  63.  
  64. /***//** CloseV() **/
  65. CloseV:
  66.   parse arg VIO_Variable
  67.  
  68.   If Open.VIO_Variable == 0 then return 0
  69.   Open.VIO_Variable = 0
  70.   return 1
  71. /**/
  72.  
  73. /***//** SeekV() **/
  74. SeekV:
  75.   parse arg VIO_Variable, VIO_Offset, VIO_Anchor
  76.  
  77.   if Open.VIO_Variable == 1 then do
  78.     VIO_Anchor = upper(left(VIO_Anchor, 1))
  79.  
  80.     VIO_Value = Value(VIO_Variable)
  81.     select
  82.       when VIO_Anchor == 'B' then Pointer.VIO_Variable = VIO_Offset
  83.       when VIO_Anchor == 'E' then Pointer.VIO_Variable = length(VIO_Value) + VIO_Offset
  84.       otherwise Pointer.VIO_Variable = Pointer.VIO_Variable + VIO_Offset
  85.     end
  86.  
  87.     if Pointer.VIO_Variable > length(VIO_Value) then Pointer.VIO_Variable = length(VIO_Value) + 1
  88.     if Pointer.VIO_Variable == 0 then Pointer.VIO_Variable = 1
  89.     return Pointer.VIO_Variable
  90.   end
  91.   else return 0
  92. /**/
  93.  
  94. /***//** ReadVCh() **/
  95. ReadVCh:
  96.   parse arg VIO_Variable, VIO_Length
  97.  
  98.   if VIO_Length == '' then VIO_Length = 1
  99.  
  100.   if Open.VIO_Variable == 1 then do
  101.     if EOF.VIO_Variable == 0 then do
  102.       VIO_Value = Value(VIO_Variable)
  103.       VIO_Ret = substr(VIO_Value, Pointer.VIO_Variable, VIO_Length)
  104.       Pointer.VIO_Variable = Pointer.VIO_Variable + VIO_Length
  105.       if Pointer.VIO_Variable > length(VIO_Value) then EOF.VIO_Variable = 1
  106.       else EOF.VIO_Variable = 0
  107.     end
  108.     else VIO_Ret = ''
  109.   end
  110.   else VIO_Ret = ''
  111.  
  112.   return VIO_Ret
  113. /**/
  114.  
  115. /***//** ReadVLn(RV) **/
  116. ReadVLn:
  117.   parse arg VIO_Variable, VIO_Count, VIO_SepChar
  118.  
  119.   if VIO_Count == '' then VIO_Count = 1
  120.   if VIO_SepChar == '' then VIO_SepChar = '0a'x
  121.  
  122.   if Open.VIO_Variable == 1 then do
  123.     VIO_Value = Value(VIO_Variable)
  124.     VIO_Ret   = ''
  125.     do VIO_i = 1 to VIO_Count
  126.       VIO_LF = pos('0a'x, VIO_Value, Pointer.VIO_Variable)
  127.       if VIO_LF > 0 then do
  128.         VIO_Ret = VIO_Ret''substr(VIO_Value, Pointer.VIO_Variable, VIO_LF - Pointer.VIO_Variable)
  129.         Pointer.VIO_Variable = VIO_LF + 1
  130.         if VIO_LF = length(VIO_Value) then EOF.VIO_Variable = 1
  131.         else EOF.VIO_Variable = 0
  132.       end
  133.       else do
  134.         if Pointer.VIO_Variable < length(VIO_Value) then do
  135.           VIO_Ret = VIO_Ret''substr(VIO_Value, Pointer.VIO_Variable)
  136.           Pointer.VIO_Variable = length(VIO_Value) + 1
  137.           EOF.VIO_Variable = 1
  138.         end
  139.       end
  140.       if EOF.VIO_Variable == 1 then leave
  141.       if VIO_i ~= VIO_Count then VIO_Ret = VIO_Ret''VIO_SepChar
  142.     end
  143.   end
  144.   else VIO_Ret = ''
  145.  
  146.   return VIO_Ret
  147. /**/
  148.  
  149. /***//** WriteVCh() **/
  150. WriteVCh:
  151.   parse arg VIO_Variable, VIO_String, VIO_Option
  152.  
  153.   VIO_Value  = Value(VIO_Variable)
  154.   VIO_Option = upper(left(VIO_Option, 1))
  155.   VIO_Length = length(VIO_Value)
  156.   if VIO_Option == 'C' then do
  157.     VIO_Value = Insert(VIO_String, VIO_Value, Pointer.VIO_Variable - 1)
  158.     Pointer.VIO_Variable = Pointer.VIO_Variable + length(VIO_String)
  159.   end
  160.   else if VIO_Option == 'B' then do
  161.     VIO_Value = VIO_String''VIO_Value
  162.     Pointer.VIO_Variable = length(VIO_String) + 1
  163.   end
  164.   else do
  165.     VIO_Value = VIO_Value''VIO_String
  166.     Pointer.VIO_Variable = length(VIO_Value)
  167.   end
  168.   interpret VIO_Variable'= VIO_Value'
  169.   if length(VIO_Value) = VIO_Length + length(VIO_String) then VIO_Ret = length(VIO_String)
  170.   else VIO_Ret = 0
  171.  
  172.   return VIO_Ret
  173. /**/
  174.  
  175. /***//** WriteVLn() **/
  176. WriteVLn:
  177.   parse arg VIO_Variable, VIO_String, VIO_Option
  178.  
  179.   return WriteVCh(VIO_Variable, VIO_String||'0a'x, VIO_Option)
  180. /**/
  181.  
  182. /***//** EOFV() **/
  183. EOFV:
  184.   parse arg VIO_Variable
  185.  
  186.   if Open.VIO_Variable == 1 then return EOF.VIO_Variable
  187.   else return 1
  188. /**/
  189. /**/
  190.  
  191. /***//*******  MemberID (MI) Subroutine  *********/
  192. MemberID:
  193.   parse arg MI_Member, MI_Array, MI_Count, MI_Start
  194.  
  195.   if MI_Count == '' then interpret 'MI_Count = 'MI_Array'.Count'
  196.   if MI_Start == '' then MI_Start = 0
  197.  
  198.   if MI_Start == 0 then MI_Count = MI_Count - 1
  199.   do MI_i = MI_Start to MI_Count
  200.     if upper(value(MI_Array'.'MI_i)) == upper(MI_Member) then return MI_i
  201.   end
  202.   return -1
  203. /**/
  204.  
  205.